// 创建数据库代理
const db = wx.cloud.database()
const videos = db.collection('videos')

//行数和当前页码
var row = 5
var page = 0

//默认评论编辑框的显示为false
var toWrite=true

//存储点赞列表的缓存
var zan = '赞'
//存储对应视频评论显示情况的缓存
var pinglun = '评论'

var app = getApp();

//获取当前日期并格式化
function formatDate() {
  var now = new Date()
  var year = now.getFullYear()
  var month = now.getMonth() + 1
  var day = now.getDate()
  var hour = now.getHours()
  var minute = now.getMinutes()

  if (month < 10) month = '0' + month
  if (day < 10) day = '0' + day

  return year + '-' + month + '-' + day + ' ' + hour + ':' + minute
}

Page({
  /**
   * 页面的初始数据
   */
  data: {
    
  },
  /**
   * 自定义函数--播放视频
   */
  playVideo:function(e){
    var _index = e.currentTarget.dataset.id
    this.setData({
      _index: _index
    })
    //停止正在播放的视频
    var videoContextPrev = wx.createVideoContext('_index')
    videoContextPrev.stop();

    //将点击视频进行播放
    var videoContext = wx.createVideoContext('_index')
    videoContext.play();
  },

  /**
   * 自定义函数--点赞功能
   */
  addLike:  function (e) {
  //console.log(e.currentTarget.dataset.id)
  var that = this
  var temp = []
  temp = this.data.islike

  if (temp[e.currentTarget.dataset.id] == false || temp[e.currentTarget.dataset.id] == null){
    //显示已点赞图标处理
    temp[e.currentTarget.dataset.id] = true
    that.setData({
      islike: temp
    })
    //使用云函数使数据库对应视频的点赞数加一
    wx.cloud.callFunction({
      name:'operate',
      data:{
        id: e.currentTarget.dataset.id,
        action: 'add'
      }
    })
    .then(res=>{
      console.log("修改点赞数加一成功",res)
      return res
    })
    .catch(res=>{
      console.log("修改点赞数加一失败",res)
      return res
    })
    //实时显示点赞数加一
    that.data.videoList[e.currentTarget.dataset.id].zan_num += 1
    that.setData({
      videoList: that.data.videoList
    })
    }else{
      //让页面显示为未点赞图标
      temp[e.currentTarget.dataset.id] = false
      that.setData({
        islike: temp
      })
      //使用云函数使数据库对应视频的点赞数加一
      wx.cloud.callFunction({
        name: 'operate',
        data: {
          id: e.currentTarget.dataset.id,
          action: 'sub'
        }
      })
      .then(res => {
        console.log("修改点赞数减一成功", res)
        return res
      })
      .catch(res => {
        console.log("修改点赞数减一失败", res)
        return res
      })
      //让页面实时显示点赞数减一
      that.data.videoList[e.currentTarget.dataset.id].zan_num -= 1
      that.setData({
        videoList: that.data.videoList
      })
    }
    //console.log(temp)
    //清除旧缓存
    wx.removeStorageSync(zan)
    //更新为修改后的新缓存
    wx.setStorageSync(zan, temp)
   },

  /**
   * 自定义函数：显示对应视频的评论区
   */
  showCommentArea:function(e){
    //console.log(e.currentTarget.dataset.id)
    var that  = this
    var temp = []
    temp = this.data.isShow

    if (temp[e.currentTarget.dataset.id] == false || temp[e.currentTarget.dataset.id] == null) {
      //显示评论区
      temp[e.currentTarget.dataset.id] = true
      that.setData({
        isShow: temp
      })
    }else{
      //隐藏评论区
      temp[e.currentTarget.dataset.id] = false
      that.setData({
        isShow: temp
      })
    }
    //console.log(temp)
    //清除旧缓存
    wx.removeStorageSync(pinglun)
    //更新为修改后的新缓存
    wx.setStorageSync(pinglun, temp)
  },

  /**
   * 自定义函数--跳转评论编辑区
   */
  write:function(e){
    if (app.globalData.userInfo == '') {
      wx.showToast({
        icon: 'none',
        title: '请先登录！',
      })
    } else{
      this.setData({
        toWrite: true
      })
    }
  },

  /**
   *自定义函数--上传评论 
   */
  formSubmit:function(e){
    var that = this
    //console.log(e.detail.target.dataset.id)
    if(e.detail.value.textarea == '') {
      wx.showToast({
        icon: 'none',
        title: '留言不能为空！',
      })
    }else{
      //获取输入的评论
      let inputContent = e.detail.value.textarea
      //console.log(inputComment)
      //获取用户的基础信息
      let userInfo = app.globalData.userInfo
      //获取当天日期
      let today = formatDate()
      //获取旧评论
      let comment = []
      comment = that.data.videoList[e.detail.target.dataset.id].comment
      //console.log(comment)
      //获取输入，插入旧评论
      let obj = {}
      obj.avatarUrl = userInfo.avatarUrl
      obj.nickName = userInfo.nickName
      obj.content = inputContent
      obj.addDate = today
      comment.push(obj)
      //使用云函数更新数据库
      wx.cloud.callFunction({
        name:'operate',
        data:{
          action:'toComment',
          id: e.detail.target.dataset.id,
          comment: comment
        }
      })
      .then(res => {
        console.log("发表评论操作成功", res)
      })
      .catch(res => {
        console.log("发表评论操作失败", res)
      })
      //实时显示新增评论,及评论数加1
      that.data.videoList[e.detail.target.dataset.id].comment_num += 1
      that.setData({
        videoList: that.data.videoList,
        inputValue: '',      //清空输入框的值value
        toWrite: false        //关闭评论编辑框
      })
      wx: wx.showToast({
        title: '评论成功！',
        duration: 2000,
      })
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //获取视频列表，每次给定5个视频
    videos.limit(row).get({
      success:res=>{
        this.setData({
          videoList:res.data
        })
      }
    })

    //获取视频点赞列表，并初始化所有视频的评论区隐藏
    var zanList = wx.getStorageSync('赞')
    var pinglun = wx.getStorageSync('评论')
    //console.log(zanList)
    this.setData({
      islike: zanList,
      isShow: pinglun
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    //翻下一页
    page++
    //获取当前页面的视频列表
    videos.skip(row*page).limit(row).get({
      success:res=>{
        //记录原有的视频记录
        let old_data = this.data.videoList
        //获取新页面的视频列表
        let new_data = res.data
        //更新视频列表
        this.setData({
          videoList:old_data.concat(new_data)
        })
      }
    })

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    
  }
})